package it.pizzastorm.service;

import java.io.Serializable;

import it.pizzastorm.domain.PuntoDiRistoro;
import it.pizzastorm.domain.PuntoDiRistoroRO;
import it.pizzastorm.domain.common.DefaultNamed;
import it.pizzastorm.domain.common.Limitrofo;
import it.pizzastorm.domain.common.Ordered;
import it.pizzastorm.domain.geolocalizzazione.CampiIndirizzo;
import it.pizzastorm.domain.geolocalizzazione.IndirizzoRO;

/**
 * E' un punto di ristoro ragionevolmente vicino al cliente.
 * 
 */
public class PuntoDiRistoroLimitrofoDTO implements PuntoDiRistoroRO, IndirizzoRO, Limitrofo, Serializable {
  private static final long serialVersionUID = 5702593917975725311L;
  public final int distanzaInMetri;
  private final DefaultNamed named;
  private final IndirizzoRO campiIndirizzo;

  public PuntoDiRistoroLimitrofoDTO(PuntoDiRistoroRO pdr, IndirizzoRO campiIndirizzo, int distanzaInMetri) {
    super();
    this.distanzaInMetri = distanzaInMetri;
    this.named = new DefaultNamed(pdr);
    this.campiIndirizzo = new CampiIndirizzo(campiIndirizzo);
  }

  /**
   * Restituisce l'id della specialita' che puo' essere ordinata.
   * 
   * @return la specialita' che puo' essere ordinata.
   */
  @Override
  public Integer getId() {
    return named.getId();
  }

  /**
   * Restituisce il nome della specialita' che puo' essere ordinata.
   * 
   * @return il nome della specialita' che puo' essere ordinata.
   */
  @Override
  public String getNome() {
    return named.getNome();
  }

  /**
   * Restituisce la descrizione della specialita' che puo' essere ordinata.
   * 
   * @return la descrizione della specialita' che puo' essere ordinata.
   */
  @Override
  public String getDescrizione() {
    return named.getDescrizione();
  }

  /**
   * Restituisce la distanza in metri dal cliente.
   * 
   * @return la distanza in metri dal cliente.
   */
  @Override
  public int getDistanzaInMetri() {
    return distanzaInMetri;
  }

  public String getCodiceNazione() {
    return campiIndirizzo.getCodiceNazione();
  }

  public String getCitta() {
    return campiIndirizzo.getCitta();
  }

  public String getCap() {
    return campiIndirizzo.getCap();
  }

  public String getVia() {
    return campiIndirizzo.getVia();
  }

  public String getNumeroCivico() {
    return campiIndirizzo.getNumeroCivico();
  }

  public String getScala() {
    return campiIndirizzo.getScala();
  }

  public String getPiano() {
    return campiIndirizzo.getPiano();
  }

  public String getInterno() {
    return campiIndirizzo.getInterno();
  }

}
